#ifndef _TRAITS_H_
#define _TRAITS_H_

#include <stdio.h>
#include <typeinfo>

template <class T>
struct MyIter
{
	typedef T Value_Type;
};


template <class T>
struct type_traits
{
	typedef typename T::Value_Type Value_Type;
};

template <class T>
struct type_traits<T*>
{
	typedef typename T::Value_Type Value_Type;
};


template <class I>
void func(I t)
{
	printf("%s\n", typeid(typename type_traits<I>::Value_Type).name());
};

#endif
